package persistenciaDAOS;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import persistencia.SQLPunto;
import logica.Punto;
import valueObjects.DataPunto;
import logica.ConexionBD;
import exceptions.PersistenciaException;

public class DAOPunto {

	private ConexionBD DBC;
	//constrcutor del DAOPunto.
	public DAOPunto() {		
				
	}
	
	public void delete() throws PersistenciaException{
		String del = null;
		
		try{
			SQLPunto cons = new SQLPunto();
			del = cons.deletePunto();
			
			PreparedStatement pstmt1;
			
			DBC=new ConexionBD();
			
			pstmt1 = DBC.getConnection().prepareStatement(del);
						
			pstmt1.executeUpdate();
			//cierro preparedStatement.
			pstmt1.close();
		} catch (SQLException e) {
			e.printStackTrace();
			throw new PersistenciaException("Se ha producido un error al intentar borrar el punto");
		}finally{
			DBC.desconectar();
		}	
	}			
		
		
	public void insert(DataPunto punto) throws PersistenciaException{
		String ins=null;
		
		try{
			
			SQLPunto cons=new SQLPunto();
			ins=cons.insertPunto();
			//creo preparedStatement, seteo parametros y ejecuto la consulta.
			PreparedStatement pstmt1;
			
			DBC=new ConexionBD();
			
			pstmt1 = DBC.getConnection().prepareStatement(ins);
						
			pstmt1.setInt(1,punto.GetCoordX());
			pstmt1.setInt(2,punto.GetCoordY());
			
			pstmt1.executeUpdate();
			//cierro preparedStatement.
			pstmt1.close();
		} catch (SQLException e) {
			e.printStackTrace();
			throw new PersistenciaException("Se ha producido un error al intentar guardar el punto");
		}finally{
			DBC.desconectar();
		}	
	}
	
	public DataPunto select() throws PersistenciaException{
		String sel=null;
		DataPunto p = new DataPunto();
		
		try{
			
			SQLPunto cons=new SQLPunto();
			sel=cons.getPunto();
			//creo preparedStatement, seteo parametros y ejecuto la consulta.
			PreparedStatement pstmt1;
			
			DBC=new ConexionBD();
			
			pstmt1 = DBC.getConnection().prepareStatement(sel);
			
			ResultSet rs = pstmt1.executeQuery();
			while(rs.next()){
				String x  = rs.getString("CoordX");
				String y  = rs.getString("CoordY");
				p.SetCoordX(Integer.parseInt(x));
				p.SetCoordY(Integer.parseInt(y));
				
			}

			rs.close();
			pstmt1.close();
		} catch (SQLException e) {
			e.printStackTrace();
			throw new PersistenciaException("Se ha producido un error al intentar guardar el punto");
		}finally{
			DBC.desconectar();
			return p;
		}	
	}
	
}	